关于递归[c++]

来源:百度知道 编辑:UC知道 时间:2024/05/29 04:48:47
#include<iostream>
using namespace std;
void f(int b[], int size)
{
if(size>0)
{
f(&b[1],size-1);
cout<<b[0]<<endl;
}
}
int main()
{
int a[5]={10,20,30,40,50};
f(a,5);
return 0;
}
分析一下这个程序,给出运行结果

50
40
30
20
10

就是利用函数的调用栈,数组中所有的元素依次进栈,到达数组末尾的时候,然后依次出栈,这样就把元素倒序过来了。

1,size=5满足if,取20的地址递归b[0]=10
2,size=4满足if,取30的地址递归b[0]=20
3,size=3满足if,取40的地址递归b[0]=30
4,size=2满足if,取50的地址递归b[0]=40
5,size=1满足if,取50的地址的下一地址b[0]=50
6,size=0不满足
7,输出b[0]=50
8,输出b[0]=40
9,输出b[0]=30
10,输出b[0]=20
11,输出b[0]=10
所以输出为50 40 30 20 10

答案:
50
40
30
20
10